| parseLine | ::= | date_time ( "\r" )? "\n" |
| parseAll | ::= | date_time <EOF> |
| date_time | ::= | ( day_of_week "," )? date time |
| day_of_week | ::= | ( "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" ) |
| date | ::= | day month year |
| day | ::= | <DIGITS> |
| month | ::= | "Jan" |
| | | "Feb" | |
| | | "Mar" | |
| | | "Apr" | |
| | | "May" | |
| | | "Jun" | |
| | | "Jul" | |
| | | "Aug" | |
| | | "Sep" | |
| | | "Oct" | |
| | | "Nov" | |
| | | "Dec" | |
| year | ::= | <DIGITS> |
| time | ::= | hour ":" minute ( ":" second )? zone |
| hour | ::= | <DIGITS> |
| minute | ::= | <DIGITS> |
| second | ::= | <DIGITS> |
| zone | ::= | ( <OFFSETDIR: ["+","-"]> <DIGITS> | obs_zone ) |
| obs_zone | ::= | ( "UT" | "GMT" | "EST" | "EDT" | "CST" | "CDT" | "MST" | "MDT" | "PST" | "PDT" | <MILITARY_ZONE: ["A"-"I","a"-"i","K"-"Z","k"-"z"]> ) |